package org.jeecg.modules.demo.hd.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.hd.entity.AppUserGoldDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.demo.hd.vo.UserDayGoldTotalVo;
import org.jeecg.modules.demo.hd.vo.UserDayGoldTypeTotalVo;
import org.jeecg.modules.demo.hd.vo.total.ChildUserGoldInputVo;
import org.jeecg.modules.demo.hd.vo.total.ChildUserGoldViewVo;
import org.jeecg.modules.demo.hd.vo.total.UserGoldDetailViewVo;
import org.jeecg.modules.system.entity.SysUser;

import java.util.List;

/**
 * @Description: app_user_gold_detail2
 * @Author: jeecg-boot
 * @Date: 2025-02-04
 * @Version: V1.0
 */
public interface AppUserGoldDetailMapper extends BaseMapper<AppUserGoldDetail> {


    /**
     * 获取当天用户获得金币统计数据
     *
     * @param day
     * @return
     */
    List<UserDayGoldTotalVo> getUserDayGoldTotalList(String day);

    /**
     * 按照金币获得类型统计数据
     *
     * @param day
     * @return
     */
    List<UserDayGoldTypeTotalVo> getUserDayGoldTypeTotalList(String day);

    /**
     * 获取 邀请人下所有人员 在 day 的 金币获取情况
     *
     * @param page
     * @param genCode
     * @param day
     * @return
     */
    List<ChildUserGoldViewVo> getChildUserGoldNumTotalList(IPage page, @Param("genCode") String genCode, @Param("day") String day);

    Integer getChildUserGoldNumTotal(@Param("genCode") String genCode, @Param("day") String day);


    ChildUserGoldViewVo queryChildUserGoldTotalModel(@Param("genCode") String genCode, @Param("day") String day);


    List<UserGoldDetailViewVo> getUserGoldDetailList(IPage page, @Param("vo") ChildUserGoldInputVo vo);

    List<UserGoldDetailViewVo> queryUserGoldTotalList2(@Param("vo") ChildUserGoldInputVo vo);

    Integer getUserGoldDetailTotal(@Param("vo") ChildUserGoldInputVo vo);


    List<ChildUserGoldViewVo> queryUserGoldTotalList(IPage page, @Param("vo") ChildUserGoldInputVo vo);

    Integer queryUserGoldTotal(@Param("vo") ChildUserGoldInputVo vo);

    /**
     * 查询用户 当前设备补贴金币次数
     *
     * @param userId   用户id
     * @param deviceId 设备id
     * @param day      日期
     * @return
     */
    Integer quereUserGoldSubsidiesCount(@Param("userId") String userId, @Param("deviceId") String deviceId, @Param("day") String day);

    /**
     * 查询用户在指定日期获得的金币数量（仅限点广告获得的金币）
     *
     * @param day
     * @param userId
     * @return
     */
    Double quereUserGoldTotalByDay(@Param("day") String day, @Param("userId") String userId);

    Double quereUserGoldTotalByDayForSettlement(@Param("day") String day, @Param("userId") String userId);

    Integer updateGoldState(@Param("day") String day, @Param("userId") String userId);


    List<UserGoldDetailViewVo> getUserGoldList(@Param("deviceId") String deviceId, @Param("userId") String userId, @Param("day") String day, IPage page);

    Integer getUserGoldListTotal(@Param("deviceId") String deviceId, @Param("userId") String userId, @Param("day") String day);
}
